﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;

namespace aula15
{
   
    partial class Program
    {
       

        static void Main()
        {
            // Exercicio 1
            Console.WriteLine("\nexercicio 1");
            List<int> ListaObjetos = new List<int>();
            ListaObjetos.AddRange(new int[] { 1, 3, 4, 12, 5, 5, 2, 8 });
            IEnumerable<int> subconjunto = from g in ListaObjetos
                                           where g > 3
                                           select g;
            foreach(int g in subconjunto)
            {
                Console.WriteLine(g);
            }


            // Exercicio 2
            Console.WriteLine("\nexercicio 2");
            //1 obter a fonte de dados
            int[] numeros = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
            //2 criacao da consulta
            var numQry = from num in numeros
                         where (num % 2) == 0
                         select num;
            //3 execucao da consulta
            foreach (int num in numQry)
            {
                Console.Write("{0} ", num);
            }

            // Exercicio 3
            Console.WriteLine("\nexercicio 3");
            int[] valores = new int[] { 10, 5, 13, 12, 9 };
            IEnumerable<int> qry=
                from valor in valores
                where valor > 9
                orderby valor descending
                select valor;
            foreach (var valor in qry)
                Console.WriteLine(valor);

            // Exercicio 4
            Console.WriteLine("\nexercicio 4");
            int[] valores1 = new int[] { 10, 5, 13, 12, 9 };
            IEnumerable<string> qry1 =
                from valor in valores1
                where valor > 9
                orderby valor descending
                select String.Format("o valor é {0}", valor);
            foreach (var valor in qry1)
                Console.WriteLine(valor);

            // Exercicio 5
            Console.WriteLine("\nexercicio 5");//contagem de valores maiores que 9
            int[] valores2 = new int[] { 10, 5, 13, 12, 9 };
            IEnumerable<int> qry2 =
                from valor in valores2
                where valor > 9
                orderby valor descending
                select valor;
            int contagem = qry2.Count();
            Console.WriteLine(contagem);

            // Exercicio 6
            Console.WriteLine("\nexercicio 6");
            Cidade[] cidades ={new Cidade(980000, "lisboa"),
                             new Cidade(450000, "Porto"),
                             new Cidade(150000, "Coimbra"),
                             new Cidade(30000, "Beja")};
            IEnumerable<Cidade> qry3 =
                from cidade in cidades
                where cidade.Populacao > 35000 && cidade.Populacao < 2000000
                select cidade;
            foreach (var cidade in qry3)
                Console.WriteLine(cidade.Nome);

            // Exercicio 7
            Console.WriteLine("\nexercicio 7");
            string[] nomes = { "jose Silva", "Maria matos", "Manuel Pereira" };
            IEnumerable<string> qry4 =
                from nome in nomes
                let nomeProprio = nome.Split(new char[] { ' ' })
                [0] //o que deseja mostrar da string a dividir pelos espaços
                select nomeProprio;
                foreach(string s in qry4)
                    Console.Write(s+ " ");

                // Exercicio 8
                Console.WriteLine("\n\nexercicio 8");
                Cidade[] cidades1 ={new Cidade(980000, "lisboa"),
                             new Cidade(450000, "Porto"),
                             new Cidade(150000, "Coimbra"),
                             new Cidade(30000, "Beja")};

                Distrito[] distritos1 ={new Distrito( "Beja"),
                             new Distrito( "Coimbra"),
                             new Distrito( "Faro")};
                Comum(cidades1, distritos1);

            Console.ReadLine();
        }
    }
   
}
